/*************************************************************************
*File Name: ilog.h
*Author: 侯广臣
*2801059691@qq.com
*Created Time: Mon 01 Feb 2021 10:54:25 AM CST
 ************************************************************************/
#ifndef _ILOG_H_
#define _ILOG_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

#include "idebug.h"

class C_Log
{
    #define LOG_SIZE_MAX 1024*1024*100  //100MB大小

    private:
        FILE    *m_logfp;               //日志文件指针
        char    m_logName[FILENAME_MAX];//日志文件名
        size_t  m_logSize;              //日志文件大小
        size_t  m_logSizeMax;           //日志文件最大值
        //构造函数设置为私有，单例模式
        C_Log(const char *logName, size_t logSizeMax = LOG_SIZE_MAX);
    public:
        //静态函数，负责构造单例，返回引用
        static C_Log& GetLog(const char *logName, size_t logSizeMax = LOG_SIZE_MAX)
        {
            static C_Log instance(logName, logSizeMax);
            return instance;
        }
        
        ~C_Log()
        {
            fclose(m_logfp);
        }
        //返回写入字节数，错误返回-1
        bool Write(const char *message, size_t messageLength);
};

#endif
